#include<bits/stdc++.h>
using namespace std;
const long long N=1e3+3,MX1=1e1+3,MX2=3e1+3,MX3=255,MX4=65535;
long long n,l[N],b[N];
char op[N][MX1],a[N][MX2];
int pd(int x,int len)
{
	int t=0,l1=0,l2=0;
	for(int i=0;i<=len;i++)
	{
		if(a[x][i]=='.'||a[x][i]==':'||i==len)
		{
			if(a[x][i]=='.')
			{
				l1++;
			}
			if(a[x][i]==':')
			{
				l2++;
			}long long sm=0;
			if(i-1<t||i-t>1&&(a[x][t]<'1'||a[x][t]>'9'))
			{
				return 0;
			}
			for(int j=t;j<=i-1;j++)
			{
				if(a[x][j]<'0'||a[x][j]>'9')
				{
					return 0;
				}sm=sm*10+(a[x][j]-'0');
			}t=i+1;
			if((a[x][i]=='.'||a[x][i]==':')&&sm>MX3||i==len&&sm>MX4)
			{
				return 0;
			}
		}
	}
	if(l1==3&&l2==1)
	{
		return 1;
	}return 0;
}
int pd1(int x,int y,int len)
{
	for(int i=0;i<len;i++)
	{
		if(a[x][i]!=a[y][i])
		{
			return 0;
		}
	}return 1;
}
int main()
{
	freopen("network.in","r",stdin);
	freopen("network.out","w",stdout);
	scanf("%lld",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%s%s",op[i],a[i]);
		l[i]=strlen(a[i]);
		if(!pd(i,l[i]))
		{
			b[i]=1;
			printf("ERR\n");
			continue;
		}
		if(op[i][0]=='S')
		{
			int t1=0;
			for(int j=1;j<i;j++)
			{
				if(!b[j]&&op[j][0]=='S'&&l[j]==l[i])
				{
					if(pd1(i,j,l[i]))
					{
						printf("FAIL\n");
						b[i]=1;t1=1;break;
					}
				}
			}
			if(!t1)
			{
				printf("OK\n");
			}
		}
		if(op[i][0]=='C')
		{
			int t1=0;
			for(int j=1;j<i;j++)
			{
				if(!b[j]&&op[j][0]=='S'&&l[j]==l[i])
				{
					if(pd1(i,j,l[i]))
					{
						printf("%d\n",j);
						t1=1;break;
					}
				}
			}
			if(!t1)
			{
				printf("FAIL\n");
			}
		}
	}return 0;
}
